二值信号量常用于事件同步、资源同步(互斥访问)。
更多...
二值信号量常用于事件同步、资源同步(互斥访问)。
| #define uCreateBin |
( |
|
bin, |
|
|
|
init |
|
) |
| sCSV_CreateBin(bin, init) |
创建二值信号量
- 参数
-
| [in] | bin | 二值信号量名称 |
| [in] | init | 二值信号量初始值
0:已上锁
1:已解锁 |
- 返回
- 无
在文件 ur_api.h 第 837 行定义.
| #define uExternBin |
( |
|
bin | ) |
sCSV_ExternBin(bin) |
| #define uGiveBin |
( |
|
bin | ) |
sUSV_GiveBin(bin) |
| #define uLockBin |
( |
|
bin | ) |
bin.binary = false |
| #define uTakeBin |
( |
|
bin, |
|
|
|
tc |
|
) |
| sUSV_TakeBin(bin, tc) |
获取二值信号量
可用于事件同步或资源同步(互斥访问)。
- 参数
-
| [in] | bin | 二值信号量名称 |
| [in] | tc | 滴答周期(超时时间)
+0:立即返回
~0:无限等待 |
- 返回
- 结果(bool)
- 返回值
-
- 注解
- 同型服务:
tTakeBin(bin)。
iTakeBin(bin)。
- 警告
- 任务中获取,不支持在临界区中,包括任务临界区、服务层临界区、全局临界区,或关闭总中断时调用。
-
当用于资源同步时(互斥访问),当tc为~0时(无限等待),仍建议用户查询返回值,原因是
当在多个相同优先级的任务中获取同一个二值信号量时(采用时间片轮转调度),其返回结果仍然有失败的可能。
在文件 ur_api.h 第 894 行定义.
| #define uWaitBin |
( |
|
bin, |
|
|
|
tc |
|
) |
| sUSV_WaitBin(bin, tc) |
等待二值信号量
在指定的超时时间内等待二值信号量为真,适用于任务的无限同步,与获取的区别是不上锁。
- 参数
-
| [in] | bin | 二值信号量名称 |
| [in] | tc | 滴答周期(超时时间)
+0:立即返回
~0:无限等待 |
- 返回
- 结果(bool)
- 返回值
-
- 警告
- 不支持在临界区中,包括任务临界区、服务层临界区、全局临界区,或关闭总中断时调用。
在文件 ur_api.h 第 863 行定义.